package cn.hsw.platform.service;

import cn.hsw.platform.core.base.BaseService;
import cn.hsw.platform.model.UserModel;
import cn.hsw.platform.vo.UserVO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

/**
 * 用户服务
 * @author 李子木
 * @date 2020-10-30
 */
public interface UserService extends BaseService<UserModel,Long> {

    /**
     * 用户注册
     * @param userVO 用户对象
     */
    void add(UserVO userVO);

    /**
     * 根据用户名查找
     * @param userName 用户名
     * @return 用户
     */
    UserModel findByUserName(String userName);

    /**
     * 根据手机号查找
     * @param phone 手机号
     * @return 用户
     */
    UserModel findByPhone(String phone);

    /**
     * 用户信息修改
     * @param userModel 要修改的信息
     * @param realName 昵称
     * @param remark 备注
     * @param rolePid 角色主键列表
     */
    void edit(UserModel userModel, String realName, String remark, Long [] rolePid);

    /**
     * 修改密码
     * @param userModel 用户
     * @param password 新密码
     */
    void editPassword(UserModel userModel, String password);

    /**
     * 通过密码登录
     * @param account 用户名或手机号
     * @param password 密码
     * @return -
     */
    String loginByPassword(String account, String password);

    /**
     * 通过用户名和手机号模糊查询
     * @param userName 用户名
     * @param phone 手机号
     * @param pageable 分页信息
     * @return UserModel Page
     */
    Page<UserModel> findByUserNameAndPhoneLike(String userName, String phone, Pageable pageable);

    /**
     * 重置密码
     * @param userModel 用重置的目标
     * @return 新密码
     */
    String resetPassword(UserModel userModel);
}
